console.log('准备工作')

// function * foo() {
//     console.log('zce')
//     return 100
// }

// const result = foo()
// console.log(result.next())


// function * foo() {
//     console.log('111')
//     yield 100
//     console.log('222')
//     yield 200
//     console.log('333')
//     yield 300
// }
// const result = foo()
// console.log(result.next())
// console.log(result.next())
// console.log(result.next())

// 案例发号器

// function * createIdMaker () {
//     let id = 1
//     while (true) {
//         yield id++
//     }
// }
// const idMaker = createIdMaker()
// console.log(idMaker.next())
// console.log(idMaker.next())
// console.log(idMaker.next())


// const todos = {
//     life: ['吃饭', '睡觉', '打豆豆'],
//     learn: ['语文', '数学', '外语'],
//     work: ['喝茶'],
//     [Symbol.iterator]: function * () {
//         const all = [...this.life, ...this.learn, ...this.work]
//         for(const item of all) {
//             yield item
//         } 
//     }
// }


// for(const item of todos) {
//     console.log(item)
// }

const p1 = {
    firstName: 'Lei',
    lastName: 'Wang',
    get fullName () {
        return this.firstName + ' ' + this.lastName
    }
}

const p2 = Object.assign({}, p1)
p2.firstName = 'zce'
console.log(p2)

const des = Object.getOwnPropertyDescriptors(p1)
const p3 = Object.defineProperties({}, des)
p3.firstName = 'zce'
console.log(p3.fullName)
